package logique.parser.factories;

import java.util.LinkedList;

import logique.reseau.tailles.Grande;
import logique.reseau.tailles.Moyenne;
import logique.reseau.tailles.Petite;
import logique.reseau.tailles.TailleVille;

/**
 * 
 * @author camille
 *
 */
public class TailleVilleFactory {

	public static final String PETITE = "petite";
	public static final String MOYENNE = "moyenne";
	public static final String GRANDE = "grande";

	private static TailleVilleFactory singleton;
	private final LinkedList<TailleVille> allInstances;
	
	private TailleVilleFactory() {
		allInstances = new LinkedList<TailleVille>();
		allInstances.add(Petite.getInstance());
		allInstances.add(Moyenne.getInstance());
		allInstances.add(Grande.getInstance());
	}

	public static TailleVilleFactory getInstance() {
		if (singleton == null) {
			singleton = new TailleVilleFactory();
		}

		return singleton;
	}

	public TailleVille getInstanceTailleVille(String id) {
		if (id.toLowerCase().equals(PETITE)) {
			return Petite.getInstance();
		}

		if (id.toLowerCase().equals(MOYENNE)) {
			return Moyenne.getInstance();
		}

		if (id.toLowerCase().equals(GRANDE)) {
			return Grande.getInstance();
		}

		return null;
	}
	
	public LinkedList<TailleVille> getAllInstances(){
		return allInstances;
	}
}
